package com.circle;

import com.circle.dir.service.ScanDir;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;

import java.io.File;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Main {

    //中环扫描128*128 生成log.txt
    public static void main(String[] args) {
        /*for (int i = 0; i < args.length; i++) {
            System.out.println("arg " + i + ":" + args[i]);
        }*/
        System.out.println("START");
       /*String base ="D:\\upFiles";
        String[] dirArr = new String[128 * 128];
        for (int i = 0; i < dirArr.length; i++) {
            int j = i / 128; // 计算 j 的值
            int k = i % 128; // 计算 k 的值
            dirArr[i] = base + "\\" + j + "\\" + k;
        } */
       String[] dirArr = new String[1];
        dirArr[0]="E:\\temp\\temp\\1"; /**/
        ScanDir scanDir = new ScanDir();
        StringBuilder sBuilder = new StringBuilder();
        for (int i = 0; i < dirArr.length; i++) {
            //指定TXT文件的路径
            String directory = dirArr[i];//
            String outString=scanDir.ListFilesInDirectory(directory);
            //outString=outString.replaceAll(",","\r\n");
            sBuilder.append(outString);
        }
        try {
            FileUtils.writeStringToFile(new File("out.txt"), sBuilder.toString(), StandardCharsets.UTF_8, false);
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            System.out.println("END");
        }
    }



    //中环处理反馈单附件的程序入口
    public static void main0(String[] args) {
        for (int i = 0; i < args.length; i++) {
            System.out.println("arg " + i + ":" + args[i]);
        }
        //指定TXT文件的路径
        String filePath = args[0];
        //附件目录
        String attachPath = args[1];
        try {
            // 使用FileUtils.readFileToString读取文件内容到字符串
            String fileContent = FileUtils.readFileToString(new File(filePath), "UTF-8");

            //字符串数组，表示表里的数据，应有的文件
            String[] lines = fileContent.split("\r\n");
            List<String> tableList = new ArrayList<String>(Arrays.asList(lines));

            //文件夹中的文件对象数组,转换成文件名称List
            String[] files = new File(attachPath).list();
            List<String> fileList = new ArrayList<String>(Arrays.asList(files));


            //判断files的名称在list中是否存在
            //contains返回true，则从fileList中删除，反之留下
            //留下的就是缺失的文件
            tableList.removeIf(s -> fileList.contains(s));

            // 使用FileUtils.writeStringToFile写入内容
            //false：如果文件已存在，则覆盖文件内容。
            //true：如果文件已存在，则将内容追加到文件末尾。
            FileUtils.writeStringToFile(new File("out.txt"), tableList.toString(), StandardCharsets.UTF_8, false);
            System.out.println("计算结束");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}